// Keywords: quantitative trait

initialize() {
	initializeMutationRate(1e-7);
	initializeMutationType("m1", 0.5, "f", 0.0);       // neutral
	initializeMutationType("m2", 0.5, "n", 0.0, 0.15);  // QTLs
	m2.convertToSubstitution = F;
	initializeGenomicElementType("g1", c(m1, m2), c(1.0, 0.1));
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
}
mutationEffect(m2) { return 1.0; }
1 early() { sim.addSubpop("p1", 5000); }
10000 late() {
	inds = sim.subpopulations.individuals;
	phenotypes = inds.sumOfMutationsOfType(m2);
	cat("Phenotypes: " + mean(phenotypes));
}
10001: late() {
	inds = sim.subpopulations.individuals;
	phenotypes = inds.sumOfMutationsOfType(m2);
	inds.fitnessScaling = ifelse(phenotypes < 0.0, 0.0, 1.0);
	
	if (sim.cycle % 10 == 0)
		cat(", " + mean(phenotypes));
}
15000 late() {
	m2muts = sim.mutationsOfType(m2);
	freqs = sim.mutationFrequencies(NULL, m2muts);
	effects = m2muts.selectionCoeff;
	catn();
	print(cbind(freqs, effects));
}
